package gemsa.beans;

import java.util.Date;

/**
 * Classe Question
 * @author Projet Dev Groupe 33
 * @version 1.0
 */
public class Question 
{
	
	// Identifiant unique de la question
	private int id;
	
	// Référence de la question (utilisée pour la liaison avec la table questionRepondue) 
	private int reference;
	
	// Enonce de la question
	private String enonce;
	
	// Sous-axe de la question
	private Ssaxe ssaxe;
	
	// Date de création de la question
	private Date date;
	
	// Description de la question
	private String description;
	
	// Etat de la question (0 : inactif, 1 : actif)
	private int etat;
	
	// Coefficient de la question
	private double coefficient;
	
	// Moyenne des notes attribuées à la question
	private double note;
	
	// Constructeur par défaut
	public Question()
	{
		super();
	}
	
	// Permet de retourner la date de création de la question
	public Date getDate() 
	{
		return date;
	}

	// Permet de d�finir la date de cr�ation de la question
	public void setDate(Date date) 
	{
		this.date=date;
	}

	// Permet de retourner la description de la question
	public String getDescription() 
	{
		return description;
	}

	// Permet de d�finir la description de la question
	public void setDescription(String description) 
	{
		this.description=description;
	}

	// Permet de retourner l'�tat de la question (0: inactif, 1: actif)
	public int getEtat() 
	{
		return etat;
	}

	// Permet de d�finir l'�tat de la question
	public void setEtat(int etat)
	{
		this.etat=etat;
	}

	// Permet de retourner l'identifiant unique de la question
	public int getId() 
	{
		return id;
	}

	// Permet de d�finir l'identifiant unique de la question
	public void setId(int id) 
	{
		this.id=id;
	}

	// Permet de retourner le enonce de la question
	public String getNom() 
	{
		return enonce;
	}

	// Permet de d�finir le enonce de la question
	public void setNom(String enonce) 
	{
		this.enonce=enonce;
	}

	// Permet de retourner la moyenne des notes de la question
	public double getNote() 
	{
		return note;
	}

	// Permet de d�finir la moyenne des notes de la question
	public void setNote(double note) 
	{
		this.note=note;
	}

	// Permet de retourner le coefficient de la question
	public double getCoefficient() 
	{
		return coefficient;
	}

	// Permet de d�finir le coefficient TTC de la question
	public void setCoefficient(double coefficient) 
	{
		this.coefficient=coefficient;
	}

	// Permet de retourner la cat�gorie de la question
	public Ssaxe getSsaxe() 
	{
		return ssaxe;
	}

	// Permet de d�finir la cat�gorie de la question
	public void setSsaxe(Ssaxe ssaxe) 
	{
		this.ssaxe =ssaxe;
	}
	
	// Permet de retourner la référence de la question (référence table questionprojet - table question)
	public int getReference() 
	{
		return reference;
	}

	// Permet de définir la référence de la question
	public void setReference(int reference) 
	{
		this.reference=reference;
	}

	// Cette m�thode est utilis�e dans la comparaison de 2 objet article.
	@Override
	public int hashCode() 
	{
		final int PRIME = 31;
		int result = 1;
		result = PRIME * result + ((date == null) ? 0 : date.hashCode());
		result = PRIME * result + id;
		result = PRIME * result + ((enonce == null) ? 0 : enonce.hashCode());
		return result;
	}

	//Cette m�thode est utilis� dans la comparaison de 2 objet article.
	@Override
	public boolean equals(Object obj)
	{
		if (this==obj)
		{
			return true;
		}	
		if (obj==null)
		{
			return false;
		}
		if (getClass()!=obj.getClass())
		{
			return false;
		}
			
		final Question other=(Question)obj;
		
		if (date==null) 
		{
			if (other.date!=null)
			{
				return false;
			}
				
		} 
		else if (!date.equals(other.date))
		{
			return false;
		}	
		if (id!=other.id)
		{
			return false;
		}
		if (enonce==null) 
		{
			if (other.enonce != null)
			{
				return false;
			}
				
		} 
		else if (!enonce.equals(other.enonce))
		{
			return false;
		}	
		return true;
	}
	
	
}
